﻿using ByBikeShop.Site;
using PersistenceLayer.DAL;
using PersistenceLayer.Model;
using SupportLayer.Constantes;
using SupportLayer.Constantes.OUTROS;
using SupportLayer.Enums;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Uol.PagSeguro.Domain;
using Uol.PagSeguro.Resources;
using Uol.PagSeguro.Service;
using Util;

namespace ByBikeShop.Cliente.Pages
{
	public partial class MeusPedidos : BasePage
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			base.PageLoad();

			if ((Cli == null) || (Cli.ID <= 0))
				Response.Redirect("/Cliente/Pages/Login.aspx");
		}

		public override void CarregaDados()
		{
			PopulaGridPedidos();
		}

		private void PopulaGridPedidos()
		{
			DataTable dt = new DataTable();
			dt.Columns.Add("Pedido_ID");
			dt.Columns.Add("Data");
			dt.Columns.Add("NumeroPedido");
			dt.Columns.Add("ValorTotal");

			if ((Cli.Pedidos == null) || (Cli.Pedidos.Count <= 0))
				return;

			foreach (var cp in Cli.Pedidos.ToList())
			{
				decimal valorTotal = 0;

				foreach (var pi in cp.Pedido_Item.ToList())
				{
					valorTotal += pi.ValorUnitario * pi.Quantidade;
				}

				dt.Rows.Add(cp.ID, cp.Data.ToString("dd/MM/yyyy").Replace("-", "/"), cp.CodigoPedido, "R$ " + valorTotal.ToString("0.00"));
			}

			grdMeusPedidos.DataSource = dt;
			grdMeusPedidos.DataBind();

		}

		protected void grdMeusPedidos_RowDataBound(object sender, GridViewRowEventArgs e)
		{
			if (e.Row.RowType == DataControlRowType.DataRow)
			{
				foreach (TableCell cell in e.Row.Cells)
				{
					cell.Style.Add("border-bottom", "1px solid #555");
				}

				int myID = Convert.ToInt32(((ImageButton)e.Row.FindControl("btnVisualizar")).CommandArgument);

				PedidoDAL pd = new PedidoDAL();
				Pedidos p = pd.Obter(myID);

				Label lblStatus = (Label)e.Row.FindControl("lblStatus");

				try
				{
					EnvironmentConfiguration.ChangeEnvironment(false);
					Transaction t = TransactionSearchService.SearchByCode(credentials, p.CodigoPedido, false);

					switch (t.TransactionStatus)
					{
						case (int)Status_Transacao.Aguardando_Pagamento:
							lblStatus.Text = "Aguardando Pagamento";
							break;
						case (int)Status_Transacao.Cancelada:
							lblStatus.Text = "Cancelada";
							break;
						case (int)Status_Transacao.Devolvida:
							lblStatus.Text = "Devolvida";
							break;
						case (int)Status_Transacao.Disponivel:
							lblStatus.Text = "Disponível";
							break;
						case (int)Status_Transacao.Em_Analise:
							lblStatus.Text = "Em análise";
							break;
						case (int)Status_Transacao.Em_Disputa:
							lblStatus.Text = "Em disputa";
							break;
						case (int)Status_Transacao.Paga:
							lblStatus.Text = "Paga";
							break;
					}
				}
				catch (Exception)
				{
					throw;
				}
			}
		}

		protected void btnVisualizar_Command(object sender, CommandEventArgs e)
		{
			try
			{
				Response.Redirect("/Cliente/Pages/VerPedido.aspx?" + OUTROS.PEDIDO + "=" + 
					Criptografia.Encriptar(	SupportLayer.Constantes.CRIPTO.CHAVE, 
											SupportLayer.Constantes.CRIPTO.VETOR, 
											e.CommandArgument.ToString()), false);
			}
			catch (Exception ex)
			{
				string mensagem = "";

				if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						mensagem = ex.InnerException.InnerException.Message;
					else
						mensagem = ex.InnerException.Message;
				else
					mensagem = ex.Message;

				ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "a", "alert('" + mensagem + "');", true);
			}
		}
	}
}